#include "koopa.h"
#include<cassert>
#include<iostream>

// 函数声明略
// ...

// 访问 raw program
void Visit(const koopa_raw_program_t &program, std::string& str) ;

// 访问 raw slice
void Visit(const koopa_raw_slice_t &slice, std::string& str);

// 访问函数
void Visit(const koopa_raw_function_t &func, std::string& str) ;
// 访问基本块
void Visit(const koopa_raw_basic_block_t &bb, std::string& str) ;

// 访问指令
void Visit(const koopa_raw_value_t &value, std::string& str);

// 访问对应类型指令的函数定义略
// 视需求自行实现
void Visit(const koopa_raw_return_t &value, std::string& str) ;

void Visit(const koopa_raw_integer_t &value, std::string& str) ;